/////////////////////////////////////////////////////////////////////////
//
// Amuse Engine SDK - resource
// Copyright( c) 2014.  All Rights Reserved
//
// File:		AEShaderProgramResource.h
// Author:		Gianluca Belardelli
// Date:		13/12/2014
//
/////////////////////////////////////////////////////////////////////////
#ifndef _AESHADERPROGRAMRESOURCE_H_
#define _AESHADERPROGRAMRESOURCE_H_

class AEShaderProgramResource : public AEBaseObject
{
protected:
	AEINT32			m_nByteCodeLen;
	AEShaderModel	m_eMinModel;

// Methods
public:
	/// \brief
	///   Constructor
	AE_DLLIMPEXP AEShaderProgramResource( void );

	/// \brief
	///   Copy Constructor
	AE_DLLIMPEXP AEShaderProgramResource( const AEShaderProgramResource &copy );

	/// \brief
	///   Destructor
	AE_DLLIMPEXP ~AEShaderProgramResource( void );

	/// @name Compile Shaders
	/// @{

	/// \brief
	/// Creates a shader program of the given type and stores it as a void pointer in out_ResultPtr which needs 
	/// to be casted to VVertexShaderObject*, VPixelShaderObject*, etc.
	AE_DLLIMPEXP void CreateShader( AEShaderStage eShader, void **lpResultPtr );

};

#endif // _AESHADERPROGRAMRESOURCE_H_
